$─11╞ ╙ET ─╙╦╓┼╥,╪ [$4├88,╪] FOR THIS DRIVE TO THE VALUE FROM THE ┬┴═ SECTOR.
$─126 ├LEAR ╫╨╙╫,╪ [$4├2─,╪] TO CLEAR THE WRITE PROTECT SWITCH.
$─12┬ ├LEAR ╬╧─╥╓,╪ [$4├86,╪] TO INDICATE THE DRIVE IS INACTIVE AND FALL THROUGH INTO ╬╞├┴╠├ TO CALCULATE THE NUMBER OF BLOCKS FREE.
╬╞├┴╠├ ├ALCULATE NUMBER OF BLOCKS FREE
$─12┼ ╩╙╥ ╙┼╠┬┴═ [$┼─┴8] TO SET THE ┬┴═ POINTER FOR THIS DRIVE.
$─131 ╙ET .┘ TO $04 (THE OFFSET FOR THE START OF THE BLOCK AVAILABILITY AREA).
$─133 ├LEAR .┴ AND .╪ TO HOLD THE BLOCKS FREE COUNT. ╘HE HIGH ORDER BYTE OF THE COUNT IS IN .╪.
$─136 ╬╒═╞1 ┴DD (┬═╨╬╘),┘ [($46),┘] TO .┴ TO COUNT THE NUMBER OF BLOCKS AVAILABLE ON THIS TRACK. ╔F .├ IS SET BY THIS ADDITION THEN INCREMENT .╪.
$─13├ ╬╒═╞2 ╔NCREMENT .┘ BY 4 TO POINT TO THE NEXT TRACK.
$─140 ╔F .┘ = $48 (TRACK 18 * 4) THEN BRANCH TO ╬╒═╞2 TO IGNORE THE DIRECTORY TRACK.
$─144 ╔F .┘ IS NOT $90 (OFFSET OF THE START OF THE DISK NAME) THEN LOOP BACK TO ╬╒═╞1 TO PROCESS ANOTHER TRACK.
$─148 ╙AVE THE LOW ORDER BYTE OF THE BLOCKS FREE COUNT ON THE STACK AND TRANSFER THE HIGH ORDER BYTE OF THE COUNT FROM .╪ TO .┴.
$─14┴ ╠OAD .╪ WITH THE DRIVE NUMBER ─╥╓╬╒═ [$54] AND SAVE .┴ INTO ╬─┬╚,╪ [$4├┼─,╪]. ╥ESTORE THE LOW ORDER COUNT OF BLOCKS FREE FROM THE STACK AND SAVE IT IN ╬─┬╠,╪ [$4├┼┬,╪].
$─153 ╥ETURN.
╙╘╥╥─ ╙TART READING AHEAD
$─154 ╩╙╥ ╙┼╘╚─╥ [$─615] TO SET UP THE HEADER IMAGE.
$─157 ╩╙╥ ╥─┬╒╞ [$─17├] TO READ THE FIRST BLOCK.
$─15┴ ╩╙╥ ╫┴╘╩╧┬ [$─5╞7] TO WAIT FOR THE JOB TO COMPLETE.
$─15─ ╩╙╥ ╟┼╘┬┘╘ [$─1╞2] TO GET THE FIRST DATA BYTE (IE THE TRACK LINK) AND SAVE IT INTO ╘╥┴├╦ [$55].
$─162 ╩╙╥ ╟┼╘┬┘╘ [$─1╞2] TO GET THE NEXT DATA BYTE (IE THE SECTOR LINK) AND SAVE IT INTO ╙┼├╘╧╥ [$56].
$─167 ╥ETURN.
╙╘╥─┬╠ ╙TART DOUBLE BUFFERING
$─168 ╩╙╥ ╙╘╥╥─ [$─154] TO READ IN THE FIRST DATA BLOCK AND SET UP FOR THE NEXT ONE.
$─16┬ ╔F ╘╥┴├╦ [$55] IS NOT ZERO THEN BRANCH TO ╙╘╥1 TO READ IN THE NEXT BLOCK.
$─16╞ ╥ETURN.
$─170 ╙╘╥1 ╩╙╥ ─┬╠┬╒╞ [$├╞┼3] TO SWITCH THE ACTIVE AND INACTIVE BUFFERS.
║FP
$─173 ╩╙╥ ╙┼╘╚─╥ [$─615] TO SET UP THE HEADER FOR THE NEXT BLOCK.
$─176 ╩╙╥ ╥─┬╒╞ [$─17├] TO READ THE BLOCK.
$─179 ╩UMP TO ─┬╠┬╒╞ [$├╞┼3] TO RESTORE THE ORIGINAL BUFFER BACK TO ACTIVE STATUS.
╥─┬╒╞ ╙TART READ JOB FOR A BLOCK
$─17├ ╙ET .┴ TO $80 (THE JOB CODE FOR A ╥┼┴─) AND BRANCH TO ╙╘╥╘╔╘ [$─182].
╫╥╘┬╒╞ ╙TART WRITE JOB FOR A BLOCK
$─17╞ ╙ET .┴ TO $90 (THE JOB CODE FOR A ╫╥╔╘┼) AND FALL THROUGH INTO ╙╘╥╘╔╘ [$─182].
╙╘╥╘╔╘ ╙TART JOB CONTAINED IN .┴
$─182 ╙AVE THE JOB COMMAND IN .┴ INTO ├═─ [$4┼].
$─184 ╩╙╥ ╟┼╘┴├╘ [$──5╞] TO GET THE ACTIVE BUFFER NUMBER AND TRANSFER IT TO .╪
$─188 ╩╙╥ ╙┼╘╩┬ [$─571] TO SET THE DRIVE NUMBER FROM THE LAST JOB, CHECK FOR A LEGAL TRACK AND SECTOR, AND IF ALL IS WELL, PERFORM THE JOB.
$─18┬ ╘RANSFER THE BUFFER NUMBER FROM .╪ TO .┴ AND SAVE IT ON THE STACK.
$─18─ ═ULTIPLY THE BUFFER NUMBER BY 2, TRANSFER IT TO .╪, AND SET ┬╒╞╘┴┬,╪ [$7┴,╪] TO ZERO. ╘HIS CLEARS THE LOW ORDER BYTE OF THE ACTIVE BUFFER POINTER.
$─193 ╩╙╥ ╘┘╨╞╔╠ [$─1─╞] TO GET THE FILE TYPE AND IF IT IS A RELATIVE FILE THEN BRANCH TO ╫╥╘├1.
$─19┴ ╙INCE THIS FILE IS NOT A RELATIVE ONE THEN INCREMENT THE BLOCK COUNT FOR THIS BUFFER ╥┼├╠,╪ [$4├3┴] AND IF NECESSARY, THEN ALSO INCREMENT ╥┼├╚,╪ [$4├42,╪].
$─1┴2 ╫╥╘├1 ╥ESTORE THE BUFFER NUMBER FROM THE STACK AND TRANSFER IT TO .╪.